<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        //0.学员对象数组,包含 一位初始 学员对象
        let stuList = [
            {
                name: 'James',
                age: 18,
                gender: true
            },
            {
                name: 'Linda',
                age: 17,
                gender: false
            }
        ];

        //1.主函数：负责 整体业务循环和操作
        function main() {
            //提问：全局函数 中的 this 是谁呢？
            while (true) {
                //a.接收 用户的 操作选项
                let usrOpt = +prompt('请输入您要进行的操作：\n1.添加学员 \n2.删除学员 \n3.显示学员列表 \n4.退出');
                //b.根据选项 调用不同的函数
                if (usrOpt == 1) {
                    addStu();
                } else if (usrOpt == 2) {
                    deleteStu();
                } else if (usrOpt == 3) {
                    showList();
                } else if (usrOpt == 4) {
                    alert('谢谢使用，再见`~~byebye~~~');
                    break; // 因为 没有使用 switch 结构，所以 直接 退出的 循环结构
                } else {
                    alert('您的选项好像写错了哦~~~ : ）');
                }
            }
        }

        main();

        //2.新增学员信息
        function addStu() {
            //a.分别接受 学员3个信息
            let uName = prompt('请输入姓名：');
            let uAge = +prompt('请输入年龄：');
            let uGender = confirm('请选择性别： 确定-男，取消-女');
            //b. 创建学员对象
            let stuObj = {
                name: uName,
                age: uAge,
                gender: uGender
            };
            //c. 将学员对象 添加到数组，并重新 展示 学员列表
            stuList.push(stuObj);

            showList();
        }

        //3.删除学员 - 根据学员名字删除
        function deleteStu() {
            //a.获取要删除学员的名字
            let stuName = prompt('请输入要删除学员的名字：');
            //b.遍历学员对象数组，找出 同名的 对象，删除之
            for (let i = 0; i < stuList.length; i++) {
                // 找到 名字相等的 学员对象
                if (stuList[i].name == stuName) {
                    // 根据 下标 删除学员对象
                    stuList.splice(i, 1);
                    // 退出循环
                    break;
                }
            }
            //c.显示学员列表
            showList();
        }

        //4.显示学员列表
        function showList() {
            //a.准备 变量保存 列表字符串
            let strList = '';

            //b.遍历 学员对象数组
            for (let i = 0; i < stuList.length; i++) {
                //取出学员对象
                let stuObj = stuList[i];
                // 拼接 学员信息字符串 'james-18-男'
                let strInfo = stuObj.name + ' : ' + stuObj.age + ' : ' + (stuObj.gender ? '男' : '女');
                // 将 每个学员信息字符串 拼接到 列表字符串中
                strList += strInfo + '\n';
            }

            //c.打印列表字符串
            alert(strList);
        }
    </script>
</head>

<body>

</body>
<!-- author:成都前端_JamesZou 
     from: https://www.jianshu.com/u/00a012fcb7e9
-->

</html>